/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package pe.com.procesos;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.io.IOUtils;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.message.BasicNameValuePair;
import pe.com.unidades.Telefono;
import pe.com.ColaProcesamiento;

/**
 *
 * @author romulogalindo
 */
public class ProcesadorTelefono extends Proceso implements Runnable {

    private Telefono cel;
    private String url_celulares = "http://www.deperu.com/celulares/";
    private String url_fijos = "http://www.deperu.com/telefonos-fijos/";

    public ProcesadorTelefono(String urlCelulares, String urlFijos) {
        this.url_celulares = urlCelulares;
        this.url_fijos = urlFijos;
    }

    public ProcesadorTelefono(Telefono cel) {
        this.cel = cel;
    }

    public Telefono getCel() {
        return cel;
    }

    public void setCel(Telefono cel) {
        this.cel = cel;
    }

    public String getCodDep(String prefijo) {
        if (prefijo.contentEquals("01")) {
            return "14";
        } else if (prefijo.contentEquals("041")) {
            return "1";
        } else if (prefijo.contentEquals("043")) {
            return "2";
        } else if (prefijo.contentEquals("083")) {
            return "3";//Apurímac
        } else if (prefijo.contentEquals("054")) {
            return "4";//Arequipa
        } else if (prefijo.contentEquals("066")) {
            return "5";//Ayacucho
        } else if (prefijo.contentEquals("076")) {
            return "6";//Cajamarca
        } else if (prefijo.contentEquals("084")) {
            return "7";//Cusco
        } else if (prefijo.contentEquals("067")) {
            return "8";//Huancavelica
        } else if (prefijo.contentEquals("062")) {
            return "9";//Huánuco
        } else if (prefijo.contentEquals("056")) {
            return "10";//Ica
        } else if (prefijo.contentEquals("064")) {
            return "11";//Junín
        } else if (prefijo.contentEquals("044")) {
            return "12";//La Libertad
        } else if (prefijo.contentEquals("074")) {
            return "13";//Lambayeque
        } else if (prefijo.contentEquals("065")) {
            return "15";//Loreto
        } else if (prefijo.contentEquals("082")) {
            return "16";//Madre de Dios
        } else if (prefijo.contentEquals("053")) {
            return "17";//Moquegua
        } else if (prefijo.contentEquals("063")) {
            return "18";//Pasco
        } else if (prefijo.contentEquals("073")) {
            return "19";//Piura
        } else if (prefijo.contentEquals("051")) {
            return "20";//Puno
        } else if (prefijo.contentEquals("042")) {
            return "21";//San Martín
        } else if (prefijo.contentEquals("052")) {
            return "22";//Tacna
        } else if (prefijo.contentEquals("072")) {
            return "23";//Tumbes
        } else if (prefijo.contentEquals("061")) {
            return "25";//Ucayali
        }
        return "";
    }

    @Override
    public void run() {
        List loginNvps = new ArrayList();
        try {
            org.apache.http.impl.client.DefaultHttpClient client = new org.apache.http.impl.client.DefaultHttpClient();
            HttpPost http = new HttpPost(cel.getTipo().contentEquals("M") ? url_celulares : url_fijos);
            if (cel.getTipo().contentEquals("M")) {
                loginNvps.add(new BasicNameValuePair("txtnumero", cel.getNumero()));
                loginNvps.add(new BasicNameValuePair("btnB", "Conocer !"));
            } else {
                if (cel.getNumero().startsWith("01")) {
                    loginNvps.add(new BasicNameValuePair("txtnum", cel.getNumero().substring(2, cel.getNumero().length())));
                    loginNvps.add(new BasicNameValuePair("cbodep", "14"));
                } else {
                    loginNvps.add(new BasicNameValuePair("txtnum", cel.getNumero().substring(3, cel.getNumero().length())));
                    loginNvps.add(new BasicNameValuePair("cbodep", getCodDep(cel.getNumero().substring(0, 3))));
                }
                loginNvps.add(new BasicNameValuePair("btnB", "Buscar Número"));
            }

            http.setEntity(new UrlEncodedFormEntity(loginNvps, "ISO-8859-1"));
            org.apache.http.HttpEntity entity = client.execute(http).getEntity();
            String res = IOUtils.toString(entity.getContent(), "ISO-8859-1");
            if (res != null | res.length() > 0) {
                cel.setCiudad("");
                if (cel.getTipo().contentEquals("M")) {
                    if (res.indexOf("class=\"col-sm-8 col-md-8\">") > -1) {
                        res = res.substring(res.indexOf("class=\"col-sm-8 col-md-8\">") + 28, res.length());
                        String operador = res.substring(0, res.indexOf("<br>"));
                        res = res.substring(res.indexOf("tcomentario") + 13, res.length());
                        if (operador.indexOf("Movistar") > -1 | operador.indexOf("Telefónica") > -1) {
                            cel.setOperador("M");
                            cel.setNumeroRPM(new ProcesadorTelefonoRPM(cel).conseguirRPM());
                        } else if (operador.indexOf("Claro") > -1) {
                            cel.setOperador("C");
                        } else if (operador.indexOf("Nextel") > -1) {
                            cel.setOperador("N");
                        } else {
                            cel.setOperador("X");
                        }
                    } else {
                        cel.setOperador("X");
                    }
                } else if (cel.getTipo().contentEquals("F")) {
                    res = res.substring(res.indexOf("capa014abc") + 11, res.length());
                    res = res.substring(res.indexOf("bloquefondo") + 13, res.length());
                    res = res.substring(0, res.indexOf("bloquecompar") + 13);
                    if (res.indexOf("tcomentario") > -1) {
                        res = res.substring(res.indexOf("blockquote") + 10, res.length());
                        res = res.substring(res.indexOf("<p") + 13, res.length());
                        res = res.substring(res.indexOf("tcomentario") + 2, res.length());
                        String operador = res.substring(0, res.indexOf("</p>"));
                        if (operador.indexOf("Movistar") > -1 | operador.indexOf("Telefónica") > -1 | operador.indexOf("TELEFÓNICA DEL PERÚ") > -1 | operador.indexOf("TELEFÓNICA MÓVILES ") > -1) {
                            cel.setOperador("M");
                        } else if (operador.indexOf("Claro") > -1 | operador.indexOf("TELMEX") > -1 | operador.indexOf("AMÉRICA MÓVIL PERÚ ") > -1) {
                            cel.setOperador("C");
                        } else if (operador.indexOf("Nextel") > -1) {
                            cel.setOperador("N");
                        } else if (operador.indexOf("ANERICATEL") > -1 | operador.indexOf("AMERICATEL") > -1) {
                            cel.setOperador("A");
                        } else {
                            cel.setOperador("X");
                        }
                    } else {
                        cel.setOperador("X");
                    }
                }
            }
        } catch (IOException | IllegalStateException ep) {
            System.out.println(">>" + ep.getMessage());
        }
        ColaProcesamiento.nuevoProceso(cel);
    }

}
